#ifndef ATTACKCOMMAND_H_
#define ATTACKCOMMAND_H_

#include "Command.h"
#include "../Units/Unit.h"

namespace OOInterface {

/**
 *The AttackCommand encapsulates the concept of commanding a Unit to attack another
 *Unit.
 *
 */
class AttackCommand : public Command
{
public:
	/**
	 * AttackCommand( ... ) :
	 * Instantiates a new AttackCommand with the focus of the attack towards
	 * the unit passed.
	 *
	 * @param attackee The person to be attacked
	 */
	AttackCommand( ConstUnitPtr attackee ) : _attackee( attackee ) { }
	virtual ~AttackCommand(){}

	ConstUnitPtr getAttackee() const { return _attackee; };
	void setAttackee( ConstUnitPtr attackee ) { _attackee = attackee; }

	virtual std::string toString() const { return std::string("AttackCommand"); }

private:
	ConstUnitPtr _attackee;
};

}

#endif /*ATTACKCOMMAND_H_*/
